package cn.hesion.dataStructures.HashTable;

public class HashTable {
    public EmpLinkedList[] empLinkedListArray;
    int size; //表示有多少条链表

    public HashTable(int size) {
        this.size = size;
        empLinkedListArray = new EmpLinkedList[size];
        //初始化empLinkedListArray
        //这里有坑 你在进行遍历初始化时，会爆空指针异常，
        // 因为此时的HashTable中没有进行empLinkedListArray的初始化操
        // 作, 需要empLinkedListArray = new EmpLinkedList[size];
        for (int i = 0; i < size; i++) {
            empLinkedListArray[i]=new EmpLinkedList();
        }
    }

    public void add(Emp emp){
        int empLinkedListNo=hash(emp.id);
        empLinkedListArray[empLinkedListNo].add(emp);
    }
    public void list(){
        for (int i = 0; i < size; i++) {
            empLinkedListArray[i].list(i);
        }
    }
    public void findEmpById(int id){
        int empLinkedListNO = hash(id);
        Emp emp = empLinkedListArray[empLinkedListNO].findEmpById(id);
        if(emp != null) {//找到
            System.out.printf("在第%d条链表中找到 雇员 id = %d\n", (empLinkedListNO + 1), id);
        }else{
            System.out.println("在哈希表中，没有找到该雇员~");
        }

    }
   public int hash(int no){
        return no%size;
   }

}
